As known in the art, software code comprises instructions that may be used to control or instruct the operation of one or more processing devices, such as microprocessors, microcontrollers, co-processors, etc. Indeed, software code is ubiquitous and pervades many aspects of modern day technology. It is not uncommon for software development projects to require the services of numerous software code developers and their supervisors for periods of time stretching over many months or even years. Moreover, the software delivery teams for such efforts are often distributed across multiple geographies. Because of this, substantial costs are often incurred for resource allocation, resource management, resource training and delivery management.
Of course, the end goals of virtually all software development projects include delivering software code of the highest possible quality at the lowest possible cost. Ideally, these two goals are not independent of each other: software code delivery at a low cost is meaningless if quality standards are not maintained, and high quality software code is of little value if the cost of its production is allowed to grow uncontrolled. Ideally, project managers seek to find the optimum balance between achieving highest quality while simultaneously minimizing costs.
Various currently-available techniques attempt to manage and optimize these goals. For example, the so-called Capability Maturity Model Integration (CMMI) and similar methods attempt to provide high level project efficiency based on measurements of the processes used to deliver the end product. That is, CMMI and related methods essentially use metrics about the delivery process itself, rather than the end product, as a proxy for quality of the end product. With these methods, the intuition is that commitment to a well-designed delivery process is more likely to result in efficient delivery of a high quality end product. However, such techniques typically only provide coarse-grained insight into the delivery efficiency and quality of the end product, mostly because of the relatively infrequent analysis intervals (sometimes, as infrequent as a monthly basis) and the inherent limitations of using process metrics as proxies for actual quality of the end product. Even where some insight into efficiency and quality is provided, the high level nature of these methods prevents or obscures more detailed insight into the performance of smaller groups or individuals. Indeed, even if excellent overall process adherence is achieved, it is readily conceivable that performance of individual developers or groups of developers could undermine quality and/or efficiency goals.
Thus, it would be advantageous to provide a system and techniques that overcome these limitations.